/**   
 * @文件名： PerformanceTestClient.java 
 * @包名： com.pattern.singleton 
 * @描述： TODO(用一句话描述该文件做什么) 
 * @作者： acl
 * @创建日期： 2016年7月6日 上午12:02:12 
 * @版本： V1.0   
 */
package com.pattern.singleton;

import java.util.concurrent.CountDownLatch;

/** 
 * @类名： PerformanceTestClient 
 * @描述： 测试多线程的环境下，五中单例模式的性能
 * @作者： acl
 * @创建日期： 2016年7月6日 上午12:02:12 
 *  
 */
public class PerformanceTestClient {
	public static void main(String[] args) throws Exception {
		long start = System.currentTimeMillis();
		int threadNum = 10;
		final CountDownLatch countDownLatch = new CountDownLatch(threadNum);
		for (int j = 0; j < 10; j++) {
			new Thread(new Runnable() {
				@Override
				public void run() {
					for (int i = 0; i < 1_000_000; i++) {
						Object object = EnumSingleton.INSTANCE;
						//Object object = DoubleCheckLockSingleton.getInstance();
					}
					countDownLatch.countDown();
				}
			}).start();
		}
		countDownLatch.await();//main线程阻塞，直到计算器变为0，才会继续执行。
		long end = System.currentTimeMillis();
		System.out.println("总耗时：" + (end - start));
	}
}
